using System;
using System.IO;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Profile;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;
using ClickSocial.Framework;
using ClickSocial.Components;
using ClickSocial.Entities;

namespace ClickSocial
{
    public partial class VerFotos : CDefault
    {      
        private string m_evento_id = "0";

        public string EventoID
        {
            get
            {
                m_evento_id = Request["EventoID"] as string ?? string.Empty;
                return m_evento_id;
            }
            set
            {
                m_evento_id = value;
            }
        }

        public string Pass
        {
            get { return txtPass.Text; }
            set { value = txtPass.Text; }
        }

        protected void Page_Load(object sender, EventArgs e)
        {          
            if (!IsPostBack)
            {
                Binding();
            }
        }

        protected void Binding()
        {            
            PagedDataSource Paginacion = new PagedDataSource();
            List<FotoInfo> fotos = new List<FotoInfo>(); ;

            long evento_id = 0;

            if (long.TryParse(EventoID, out evento_id))
            {

                fotos = Fotos.GetFotos(evento_id);

                lblDescripcion.Visible = !Fotos.EventoActual.Equals(string.Empty);
                lblDescripcion.Text = Fotos.EventoActual.Descripcion;
                lblfotografo.Text = Fotos.EventoActual.NombreFotografo;
                lblnombreEvento.Text = Fotos.EventoActual.Nombre;
                lblFecha.Text = Fotos.EventoActual.Fecha.ToString("d");
                lnkInfoFotografo.NavigateUrl = "~/InfoFotografo.aspx?uf=" + Fotos.EventoActual.Fotografo;

                bool tiene_perm = false;

                if (Fotos.EventoActual.Visibilidad == 3 && Session["PassEvent"] != null && Convert.ToString(Session["PassEvent"]) == Fotos.EventoActual.Clave)
                {
                    tiene_perm = true;
                }
                else if (Fotos.EventoActual.Visibilidad == 3 && pnlPassword.Visible == true && Pass == Fotos.EventoActual.Clave)
                {
                    tiene_perm = true;
                    
                    Session["PassEvent"] = Fotos.EventoActual.Clave;
                }
               
                if (User.IsInRole(Global.RolesApp.Host))
                {
                    tiene_perm = true;
                }

                if (Fotos.EventoActual.Visibilidad == 3 && tiene_perm==false)
                {
                    Session.Remove("PassEvent");
                    lblMensaje.Visible = true;
                    lblMensaje.Text = "Ingrese la clave suministrada por el fotografo " + Fotos.EventoActual.NombreFotografo + " para ver este evento.";
                    pnlPassword.Visible = true;
                    return;
                }
                else
                {
                    pnlPassword.Visible = false;
                    lblMensaje.Visible = false;
                }

                Paginador paginador = new Paginador(Request["page"], Request.Path, Request.QueryString);
                paginador.PageDS.DataSource = fotos;
                paginador.PageDS.AllowPaging = true;
                paginador.PageDS.PageSize = int.Parse(hiddenPageSize.Value ?? "20");
                litPaginador.Text = paginador.Render();

                dlFotos.DataSource = paginador.PageDS;
                dlFotos.DataBind();
                
            }
        }

        protected void imgBtnComprar_Command(object sender, CommandEventArgs e)
        {
            string args = e.CommandArgument as string;
            long eventoId = 0;
            string archivo = args.Split(':')[0];
            double precio = double.Parse(args.Split(':')[1]);

            if(long.TryParse(EventoID, out eventoId))
            {
                Cart carrito = null;

                if (Session["carrito"] == null)
                {
                    carrito = new Cart();
                    carrito.Creado = DateTime.Now;
                }
                else
                {
                    carrito = Session["carrito"] as Cart;
                    
                }

                CartItem item_cart = new CartItem(eventoId, archivo, precio, 1);
                
                if(carrito.CartItems.Find(
                    delegate(CartItem item)
                    {
                        return (item.Archivo == item_cart.Archivo && item.EventoID == item_cart.EventoID && item.Precio == item_cart.Precio && item.TipoCart == item_cart.TipoCart);
                    })==null)
                {
                    
                    carrito.CartItems.Add(item_cart);
                    carrito.UltimoIngreso = DateTime.Now;
                    Session["carrito"] = carrito;
                }

                ((Site)Master).UpdateCarrito();
            }
        }

        protected void imgBtnPedido_Command(object sender, CommandEventArgs e)
        {
            string args = e.CommandArgument as string;
            long eventoId = 0;
            string archivo = args.Split(':')[0];
            double precio = double.Parse(args.Split(':')[1]);

            if (long.TryParse(EventoID, out eventoId))
            {
                Cart carrito = null;

                if (Session["carrito"] == null)
                {
                    carrito = new Cart();
                    carrito.Creado = DateTime.Now;
                }
                else
                {
                    carrito = Session["carrito"] as Cart;

                }

                CartItem item_cart = new CartItem(eventoId, archivo, precio, 0);

                if (carrito.CartItems.Find(
                    delegate(CartItem item)
                    {
                        return (item.Archivo == item_cart.Archivo && item.EventoID == item_cart.EventoID && item.Precio == item_cart.Precio && item.TipoCart == item_cart.TipoCart);
                    }) == null)
                {

                    carrito.CartItems.Add(item_cart);
                    carrito.UltimoIngreso = DateTime.Now;
                    Session["carrito"] = carrito;
                }

                ((Site)Master).UpdateCarrito();
            }
        }

        protected void btnEnviarPass_Click(object sender, EventArgs e)
        {
            Binding();
        }
        
    }
}
